﻿/// -------页面描述：导航管理业务逻辑类
/// -------创建日期：2010年04月12日 
/// -------创建人：wang
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Data.SqlClient;
using System.Configuration;
namespace webnew.BLL
{
    public class Sys_Navigation
    {
        private readonly webnew.DAL.Sys_NavigationHelper dal = new webnew.DAL.Sys_NavigationHelper();
         public Sys_Navigation()
		{ }

        /// <summary>
		/// 增加一条数据
		/// </summary>
         ///<param name="model"></param>
         /// <param name="isNav">判断是否是导航，true为导航，false为按钮</param>
         /// <returns></returns>
         public int Add(webnew.Model.Sys_NavigationInfo model,bool isNav)
        {
            //CheckModel(model);
            if (isNav)
            {
                return dal.AddNav(model);

            }
            else
            {
                return dal.AddCon(model);
            }
        }

      /// <summary>
      /// 更新一条数据
      /// </summary>
      /// <param name="model"></param>
      /// <param name="isNav">判断是否是导航，true为导航，false为按钮</param>
      /// <returns></returns>
         public int Update(webnew.Model.Sys_NavigationInfo model,bool isNav)
        {  
             //CheckModel(model);
            if (isNav)
            {
                return dal.ModifyNav(model);

            }
            else
            {
                return dal.ModifyCon(model);
            }
          
         
        }

        /// <summary>
        /// 根据ID删除一条数据
        /// </summary>
        public int del(string id)
        {          
            return dal.Del(id);
        }

        /// <summary>
        /// 获取导航的所有父节点
        /// </summary>
        /// <returns></returns>
        public List<Model.Sys_NavigationInfo> GetParentList()
        {
            return dal.GetParentList();
        }

        /// <summary>
        /// 根据当前的ID获取导航的所属子节点
        /// </summary>
        /// <returns></returns>
        public List<Model.Sys_NavigationInfo> GetChildList(string id)
        {
            return dal.GetChildList(id);
        }

        /// <summary>
        /// 根据按钮ID和当前对应页面 查找是否 存在该按钮ID
        /// </summary>
        /// <param name="ConId">按钮ID</param>
        ///<param name="ConId">当前对应页面ID</param>
        /// <returns></returns>
        public string ExistConID(string ConId, string ParentID)
        {
            return dal.ExistConID(ConId, ParentID);
        }

        /// <summary>
        /// 根据ID获取所属子节点的新增排序号
        /// </summary>
        /// <param name="id"></param>
        /// <returns>如果为NULL,返回1；否则返回当前ID所属子节点的最大排序号+1</returns>
        public int GetChildNewSort(string id)
        {
            return object.Equals(dal.GetChildMaxSort(id), null) ? 1 : dal.GetChildMaxSort(id)+1;
        }

        /// <summary>
        /// 根据ID修改其排序
        /// </summary>
        /// <param name="id">修改的ID</param>
        /// <param name="sort">新的排序号</param>
        public void SetChildSort(string id, int sort)
        {
            dal.SetChildSort(id, sort);
        }
        /// <summary>
        /// 获得泛型数据列表（存在的所有导航和按钮）
        /// </summary>
        public List<webnew.Model.Sys_NavigationInfo> GetList()
        {
            return dal.GetList();
        }

        /// <summary>
        /// 根据条件获得泛型数据列表
        /// </summary>
        public List<webnew.Model.Sys_NavigationInfo> GetconList(string condition)
        {
            return dal.GetconList(condition);
        }

       /// <summary>
       /// 根据ID返回一个实体
       /// </summary>
        public webnew.Model.Sys_NavigationInfo GetList(string ID)
        {
            return dal.GetModel(ID);
        }

         /// <summary>
        /// 根据用户ID获取符合权限的按钮
        /// </summary>
        /// <returns></returns>
        public List<Model.Sys_NavigationInfo> GetUserControl(string id, string ClassName)
        {
            return dal.GetUserControl(id,ClassName);
        }

        /// <summary>
        /// 根据用户ID获取导航
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public List<Model.Sys_NavigationInfo> GetUserNav(string id)
        {
            return dal.GetAllNav(id);
        }

        /// <summary>
        /// 根据用户ID,公司服务器计算机名获取导航
        /// </summary>
        /// <param name="id"></param>
        /// <param name="strMacName"></param>
        /// <returns></returns>
        public List<Model.Sys_NavigationInfo> GetUserNav(string id, string strMacName)
        {
            string strCompanyMacName = ConfigurationSettings.AppSettings["CompanyMacName"];//获取配置文件的公司服务器计算机名
            //匹配配置文件的公司服务器计算机名 是否与当前服务器计算机名相同（相同：用户登录公司服务器，显示所有系统菜单；
            //                                                               不相同：用户登录油库服务器，只显示业务系统菜单）
            if (strCompanyMacName.ToUpper() == strMacName.ToUpper()) 
            {
                return dal.GetAllNav(id);  //获取所有系统菜单
            }
            else
            {
                return dal.GetYewuNav(id); //获取业务系统菜单
            }

           
        }
        /// <summary>
        /// 取得数据行数,不建议直接使用此方法,请根据业务逻辑重写
        /// </summary>
        public int GetCount(string tablename,string condition)
        {
            return dal.GetCount(tablename,condition);
        }

        /// <summary>
		/// 分页获取泛型数据列表,不建议直接使用此方法,请根据业务逻辑重写
		/// </summary>
        public SqlDataReader GetPageList(string field,string condition, int pageSize, int pageIndex, string tbNames, string sortNames, bool sortType)
        {
            if (pageSize <= 0)
                throw new Exception("每页数据条数必须大于0。");

            if (pageIndex <= 0)
                throw new Exception("页索引必须大于0。");

            if (string.IsNullOrEmpty(sortNames))
                throw new Exception("排序字段不能为空。如果是默认排序，可以填写主键字段。");
            return dal.GetPageList(field,condition, pageSize, pageIndex, tbNames, sortNames, sortType);
        }


        //////////////////////////////////////////////////////////////////////////////
        //根据当前的页面名（如S_compList）获取其中文名（如单位管理）
        public string GetModuleName(string name)
        {
            return dal.GetModuleName(name);
        }

        /// <summary>
        /// 获取后台管理的模块名
        /// </summary>
        /// <returns></returns>
        public List<Model.Sys_NavigationInfo> GetModule()
        {
            return dal.GetModule();
        }


        /// <summary>
        /// 根据用户ID获取所有系统菜单(包括页面和按钮)
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public List<Model.Sys_NavigationInfo> GetNavByUserId(string id)
        {
            return dal.GetNavByUserId(id);
        }
    }
}
